草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 抑制来自 CPD 的 C/C++ 代码警告

我们正在使用PMDCopyPasteDetector(CPD)来分析我们的C和C++代码。然而,代码中有几部分非常相似,但有充分的理由,我们希望抑制这些部分的警告。documentationofPMDCPD只提到了一些关于注释的东西,但这对我们这些语言不起作用。我怎样才能仍然忽略特定部分的警告?是否有评论可以这样做?[更新]我正在使用以下Groovy脚本来运行CPD:@GrabResolver(name='jcenter',root='https://jcenter.bintray.com/')@Grab('net.sourceforge.pmd:pmd-core:5.4.+')@Gr

c++ - 最近最少使用 (LRU) 缓存

我知道我可以在STL中使用各种容器类,但这样做有点矫枉过正,而且代价高昂。我们有超过100万的在线用户,每个用户我们需要维护8个不相关的32位数据项。目标是查找列表中是否存在一个项目,如果没有,插入。如果已满,则删除最旧的条目。蛮力方法是维护最后一个写入指针并迭代(因为只有8个项目),但我正在寻找输入以更好地分析和实现。期待在设计模式和算法方面的一些有趣的建议。 最佳答案 DonKnuth在TheArtofComputerProramming中给出了几个有趣且非常有效的近似值。自组织列表I:当你找到一个条目时,将它移到列表的头部;从

c++ - 在不更改代码的情况下生成 NaN float 时停止调试器

我读了this和this.精髓是,如果通过包含fenv.h并通过feenableexcept(FE_ALL_EXCEPT&~FE_INEXACT);启用所有浮点异常但FE_INEXACT生成nan,则可以抛出SIGFPE;因此,代码改变了形式intmain(){doubledirty=0.0;doublenanvalue=0.0/dirty;return0;}到#includeintmain(){feenableexcept(FE_ALL_EXCEPT&~FE_INEXACT);//EnableallfloatingpointexceptionsbutFE_INEXACTdoubled

c++ - 如何从 C++ 处理 C 库中不同大小的类型

我有一个从C++链接到的外部C库。该库定义了一个使用bool的结构,并为C语言包含了一个typedef。问题是这个typedef使用int,所以(在我的平台上)不是这个大小为1字节的bool,而是4个字节。然后,当我#includeheader并在C++中创建结构时,bool(作为C++标准类型)的大小为1个字节,因此该结构具有完全不同的内存布局,当我将它传递给C库以便在那里修改它时,会导致各种堆栈损坏。有没有办法在不修改外部库的情况下解决这个问题?我想用C++编译器而不是C编译器编译外部库会起作用,对吗?这是我解决这个问题的唯一机会吗?库.h:#ifndef__cplusplusty

c++ - 如何禁用没有命令行开关的 gcc 警告?

我收到以下警告:warning:'X'isinitializedanddeclared'extern'和它lookslikeit'snobigdeal我可以禁用它。更改代码对我来说并不是一个好主意,因为我无法控制代码,我只需要编译它。所以我想禁用警告。如果它旁边有一个-WSomeDefect键,那么我可以使用一个-Wno-SomeDefect命令行开关,但看起来这个警告没有明显的开关.如何禁用此类警告? 最佳答案 对于提出的问题的直接回答:从GCC的源代码中可以看出,没有(半)特定的开关来禁用此警告。它似乎只能通过禁用所有警告(-w

c++ - 是否有任何教程可以帮助精通 c++ 的程序员学习 c?

我成为了面向对象代码时代的专业程序员,并且有多年的C++编程经验。我经常从事大型项目,这些项目有多年的C++和C混合遗留代码。我觉得在系统的纯c部分上工作不太舒服。通过C++编程,我了解所有的c语法,但是我对如何组织没有对象的复杂c程序以及我想填补的管理内存的最佳实践的知识有一个漏洞。我在做java程序员后学习了c++,认为多一点c会让我成为一个更好的c++程序员,少一点java翻译成c++程序员 最佳答案 在组织方面,看POSIXAPIs,特别是pthreads将使您对如何组织C代码有一个很好的了解。良好的C项目组织的基本规则是:

c++ - 从 IRQL=DISPATCH_LEVEL (KbFilter/KMDF) 发送 IOCTL

我正在使用WDK中的KbFilter示例,尝试在由KbFilter_ServiceCallback调用并因此在DISPATCH_LEVEL执行的函数中发送IOCTL。该函数只需发送一个IOCTL并返回,而不是等待输出缓冲区被填充,因此它可以是异步的,即触发即忘。我目前正在使用WDF函数WdfIoTargetFormatRequestForIoctl和WdfRequestSend尝试在DISPATCH_LEVEL发送,但什么也没得到。对WdfRequestSend的调用成功,但似乎未收到IOCTL。使用WdfIoTargetSendIoctlSynchronously或WDM模式IoBu

c# - 如何制作 PInvoke 友好的 native API?

如何使原生API对PInvoke友好?有一些关于如何修改native程序以与P/Invoke一起使用的提示here.但是在我编写native程序之前,我应该注意哪些事项才能使我的程序/库PInvoke友好?使用C或C++都可以。更新:如果我编写CAPI,我必须做些什么才能使用如下C#语法进行P/Invoke:[DLLimport("MyDLL.dll")]是否可以对原生C++代码/库执行相同的操作?制作P/Invoke友好nativeAPI的一些技巧的总结/改写:+参数应该是本地类型(int、char*、float、...)+参数越少越好+如果动态内存被分配并传递给托管代码,请确保创建

c++ - 专家的字符串和字符映射问题

这是一个让我难过的问题(明智的解决方案):给定一个strS,应用字符映射Cm={a=(m,o,p),d=(q,u),...}并使用C或C++打印出所有可能的组合。字符串可以是任意长度,字符映射的个数是变化的,不会有任何映射到另一个映射(从而避免循环依赖)。例如:字符串abba与映射a=(e,o),d=(g,h),b=(i)将打印:abba,ebba,obba,abbe,abbo,ebbe,ebbo,obbe,obbo,aiba,aiia,abia,eiba,eiia,...... 最佳答案 绝对有可能,并不难...但这肯定会生成很多

c++ - 更好地理解 extern "C"函数

我只是想进一步了解externC函数。据我所知,externC函数始终是您尝试从已编译的应用程序调用的函数。可执行文件、静态或动态库。extern"C"{HRESULTCreateDevice();typedefHRESULT(*CREATEDEVICE)();HRESULTReleaseDevice();typedefHRESULT(*RELEASEDEVICE)();}所以我的问题是...我的理解对吗??它总是必须是C函数指针吗??'为什么必须为每个函数使用typedef??我假设当您使用GetProcAddress()时。您正在为特定应用程序HEAP而不是您从中调用它的应用程序分